package com.example.demoweb.designMode.singleton;
/**
 * 懒汉模式
 * 当类加载的时候只是声明了一个实例,并没有去创建这个唯一的实例,而是当用户获取的时候,他才真正地去做判断,是否为空,如果为空,则创建这个实例
 * 当第一个用户来获取的时候,为空,则创建一个实例,当第二/第三/第四个...用户再获取的时候,实例不为空,则不会再去创建实例
 * 
 * 区别
 * 饿汉模式的特点是加载类时比较慢(因为要创建实例),但运行时获取对象的速度比较快,线程安全的
 * 懒汉模式的特点是加载类是比较快(因为不用创建实例),但运行时获取对象的速度比较慢(因为获取对象时要创建实例),线程不安全的
 */
public class Singleton2 {
	//1.将构造方式私有化,不允许外边直接穿件对象
	private Singleton2(){
		
	}
	/*
	 * 2.创建类的唯一实例,使用private static修饰
	 * 这个地方只是生命这个类的实例,没有进行实例化
	 */
	private static Singleton2 instance;
	
	//3.提供一个用于获取市里的方法,使用 public static 修饰
	public static Singleton2 getInstance(){
		/*
		 * 因为第二步中,只是生命了类的实例,并没有创建类的实例,外部调用此方法获取的类的实例是个空的
		 * 所以要进行判断,如果是空的,则创建一个实例
		 */
		if(instance == null){
			instance = new Singleton2();
		}
		return instance;
	}

}
